package views;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
* The main window
*/
public class MainView extends JFrame{
private static JTextArea logging = new JTextArea();
private JButton start = new JButton("Start!");
private JTextField numberOfQueues = new JTextField("Number of Queues");
private JTextField simulationInterval = new JTextField("Simulation Interval");
private JTextField minArrivalInterval = new JTextField("Minimum Arrival Interval");
private JTextField maxArrivalInterval = new JTextField("Maximum Arrival Interval");
private JTextField minServiceTime = new JTextField("Minimum Service Time");
private JTextField maxServiceTime = new JTextField("Maximum Service Time");
private JTextField maxLoadPerServer = new JTextField("Maximum Load Per Queue");
private QueueEvolution queueEvolution = new QueueEvolution();
private JScrollPane scrollLogging;
public MainView(String title){
super(title);
this.setLayout(new FlowLayout());
Dimension dim = new Dimension(200, 20);
numberOfQueues.setPreferredSize(dim);
simulationInterval.setPreferredSize(dim);
minArrivalInterval.setPreferredSize(dim);
maxArrivalInterval.setPreferredSize(dim);
minServiceTime.setPreferredSize(dim);
maxServiceTime.setPreferredSize(dim);
maxLoadPerServer.setPreferredSize(dim);
start.setPreferredSize(dim);
queueEvolution.setPreferredSize(new Dimension(800, 250));
logging.setLineWrap(true);
logging.setEditable(false);
scrollLogging = new JScrollPane(logging);
scrollLogging.setPreferredSize(new Dimension(800, 100));
scrollLogging.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
setSize(1000, 500);
add(queueEvolution);
add(numberOfQueues);
add(maxLoadPerServer);
add(simulationInterval);
add(minArrivalInterval);
add(maxArrivalInterval);
add(minServiceTime);
add(maxServiceTime);
add(start);
add(scrollLogging);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public void refresh(){
queueEvolution.repaint();
revalidate();
repaint();
}
public void setStartButtonActionListener(ActionListener a){
start.addActionListener(a);
}
public static JTextArea getLogging() {
return logging;
}
public JTextField getNumberOfQueues() {
return numberOfQueues;
}
public JTextField getSimulationInterval() {
return simulationInterval;
}
public JTextField getMinArrivalInterval() {
return minArrivalInterval;
}
public JTextField getMaxArrivalInterval() {
return maxArrivalInterval;
}
public JTextField getMinServiceTime() {
return minServiceTime;
}
public JTextField getMaxServiceTime() {
return maxServiceTime;
}
public JTextField getMaxLoadPerServer() {
return maxLoadPerServer;
}
public JButton getStart() {
return start;
}
}